/**
 * 
 */
package com.appwx.sdk.util;

import java.util.WeakHashMap;

import android.graphics.Bitmap;
import android.util.Log;


/**
 * 内存缓存
 * @author xiajun
 * @see 内存缓存的存取速度非常惊人，远远快于文件读取，如果没有内存限制，当然首选这种方式。
 *	遗憾的是我们有着16M的限制（当然大多数设备限制要高于Android官方说的这个数字），
 *	这也正是大Bitmap容易引起OOM的原因。Memory Cache将使用WeakHashMap作为缓存的中枢，当程序内存告急时，
 *	它会主动清理部分弱引用（因此，当引用指向为null，我们必须转向硬盘缓存读取数据，如果硬盘也没有，那还是重新下载吧）。
 */
public class MemoryCache {

	private static final String TAG = MemoryCache.class.getSimpleName();
	
	//弱引用
	private WeakHashMap<String, Bitmap> memoryCache = new WeakHashMap<String, Bitmap>();
	
	/**
	 * 通过ket获取内存缓存中的Bitmap
	 * @param key
	 * @return
	 */
	public Bitmap get(String key){
		if(key != null)
			return memoryCache.get(key);
		return null;
	}
	
	/**
	 * 存入Bitmap到弱引用中
	 * @param key
	 * @param value
	 */
	public void put(String key,Bitmap value){
		if(key != null && !"".equals(key) && value != null){
			memoryCache.put(key, value);
			Log.i(TAG, "memoryCache Size：" + memoryCache.size());
		}
	}
	
	/**
	 * 清除内存缓存
	 */
	public void clear(){
		memoryCache.clear();
	}
}
